package com.hptpd.questionnairesurvey.service;

import com.hptpd.questionnairesurvey.component.Result;
import com.hptpd.questionnairesurvey.service.base.IBaseService;
import com.hptpd.questionnairesurvey.vo.*;
import com.hptpd.questionnairesurvey.vo.excel.ImportQuestionnaireVo;
import org.springframework.data.domain.Pageable;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

/**
 * \* Created with IntelliJ IDEA.
 * \* Date: 2019/9/17
 * \*
 * \* Description:
 * \
 *
 * @author walter_long
 */
public interface IQuestionnaireService extends IBaseService {
    /**
     * 分页列出问卷
     *
     * @param paramMap {Map<String, Object>}
     * @param pageable {Pageable}
     * @return {Result}
     */
    Result listQuestionnairesByPage(Map<String, Object> paramMap, Pageable pageable);

    /**
     * 删除问卷
     *
     * @param questionnaireVo {QuestionnaireVo}
     * @return {Result}
     */
    Result deleteQuestionnaire(QuestionnaireVo questionnaireVo);

    /**
     * 发布问卷
     *
     * @param questionnaireVo {QuestionnaireVo}
     * @return {Result}
     */
    Result issueQuestionnaire(QuestionnaireVo questionnaireVo);

    /**
     * 根据问卷名及删除状态，查询问卷
     *
     * @param name
     * @param deleted
     * @return
     */
    Object getQuestionnaire(String name, boolean deleted);

    /**
     * 新建试卷
     *
     * @param questionnaireVo
     * @return
     */
    Result saveQuestionnaire(QuestionnaireVo questionnaireVo);

    /**
     * 根据试卷Id查询试卷
     *
     * @param id
     * @return
     */
    Result getQuestionnaireById(String id);

    /**
     * 获取用户未完成的问卷详情
     *
     * @param userId       String
     * @param userSurveyId String
     * @return Result
     */
    Result getQuestionnaireByUserSurveyId(String userId, String userSurveyId);

    /**
     * 删除维度
     *
     * @param id 维度id
     * @return
     */
    void deleteDimension(String id);

    /**
     * 删除单选题
     *
     * @param id 单选题id
     * @return
     */
    void deleteSingleQuestion(String id);

    /**
     * 删除填空题
     *
     * @param id
     * @return
     */
    void deleteFillQuestion(String id);

    /**
     * 删除单选题选项
     *
     * @param id
     * @return
     */
    void deleteChoice(String id);

    /**
     * 导入试卷
     *
     * @param excelFile
     * @return
     */
    Result importQuestionnaire(MultipartFile excelFile);

    /**
     * 复制试卷
     * @param questionnaireVo
     * @return
     */
    Result copyQuestionnaire(QuestionnaireVo questionnaireVo);
}
